package com.wxh.bomb.netty.design.future.jdk;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.FutureTask;

/**
 * 使用Jdk底层的Future来实现
 *
 * @author wxh
 * @date：2017.10.10
 */
public class Main {

    public static void main(String[] args) throws Exception {
        FutureTask<String> futureTask =
                new FutureTask<String>(new RealData("Jack"));
        ExecutorService executor =
                Executors.newFixedThreadPool(1); //使用线程池
        // 执行FutureTask，相当于上例中的client.request("name")发送请求
        executor.submit(futureTask);
        System.out.println("开始处理任务....");
        // 这里可以用一个sleep代替对其他业务逻辑的处理
        // 在处理这些业务逻辑过程中，RealData也正在创建，从而充分了利用等待时间
        System.out.println("开始处理其他事情...");
        Thread.sleep(2000);
        System.out.println("结束处理其他事情...");
        // 使用真实数据
        // 如果call()没有执行完成依然会等待
        System.out.println("任务处理情况：" + futureTask.get());
    }

}
